Subject: SNI proposal

From: [email-masked]
Date: Mon, 13 Dec 93 15:00:21 +0100

Responding to Stevens proposal I want to propose a similiar but different
solution.

I dont like the term 'source LU name'. I think we should call it
'local LU name' because it is the LU name in the local system.
At an incoming conversation the source LU is the partner LU.

My proposal for the Set and Extract calls is nearly the same as that
of Steven.

My proposal for the Specify call is a little different. I would like
to allow a program to accept all incoming conversations at a specified
LU indepent of the LU name.

I dont know exactly what was the intention of Dennis Chimienti for
his Specify_Local_LU_Name call. Dennis please send your proposal also
to the ciw-sig-specify-local-address.

Here is my proposal:

Extract_Local_LU_Name (CMELLU)
==============================

    A program uses the Extract_Local_LU_Name call to extract the local_lu_name
    characteristic's value for a given conversation. The value is returned in
    the local_lu_name parameter. It is the name of the local LU to which the
    conversation is attached.

Format
------

    CM_RETCODE  CMELLU( conversation_ID, 
			local_lu_name, 
			local_lu_name_length,
			return_code )

    char *conversation_ID;
    char *local_lu_name;
    int  *local_lu_name_length;
    int  *return_code;

Parameters
----------

    conversation_ID (input)
	Specifies the conversation identifier.

    local_lu_name (output)
	Specifies the variable containing the name of the local LU to which
	the conversation is attached. 

    local_lu_name_length (output)
	Specifies the variable containing the length of the returned 
	local_lu_name parameter not including the trailing '\0'.

    return_code (output)
	Specifies the result of the call execution. The return_code variable
	can have one of the following values:

	- CM_OK
	- CM_PROGRAM_PARAMETER_CHECK
	    This value indicates that the conversation_ID specifies an 
	    unassigned conversation identifier.
	- CM_PROGRAM_STATE_CHECK
	    This value indicates that the conversation_ID specifies a 
	    conversation in Reset state.
	- CM_PRODUCT_SPECIFIC_ERROR

Set_Local_LU_Name (CMSLLU)
==========================

    Set_Local_LU_Name is used by a program to set the local_lu_name and 
    local_lu_name_length characteristic for a conversation. By executing this
    call the local LU, which is to be used for a new conversation, is 
    determined by the program instead of being selected by Node Services.

    A program cannot issue the Set_Local_LU_Name call after an Allocate is
    issued. Only the program that initiates the conversation (using the
    Initialize_Conversation call) can issue this call.

    The partner program, after having accepted the conversation using the 
    Accept_Conversation call, can extract the name of the initiating LU 
    by means of the Extract_Partner_LU_Name call.

Format
------

    CM_RETCODE  CMSLLU( conversation_ID, 
			local_lu_name, 
			local_lu_name_length,
			return_code )

    char *conversation_ID;
    char *local_lu_name;
    int  *local_lu_name_length;
    int  *return_code;

Parameters
----------

    conversation_ID (input)
	Specifies the conversation identifier.

    local_lu_name (input)
        Specifies the name of the local LU that shall be used for the new 
	conversation.

    local_lu_name_length (input)
	Specifies the length of the local LU name not including the trailing 
	'\0'. The length can be from 1 to 17 bytes.

    return_code (output)
	Specifies the result of the call execution. The return_code variable
	can have one of the following values:

	- CM_OK
	- CM_PROGRAM_STATE_CHECK
	    This value indicates that the conversation is not in Initalize 
	    state.
	- CM_PROGRAM_PARAMETER_CHECK
	    This value indicates one of the following:
	    - The conversation_ID specifies an unassigned conversation 
	      identifier.
	    - The local_lu_name_length specifies a value less than 1 or greater
	      than 17.
	    - The name specified in local_lu_name does not specify a local LU
	      known by Node Services.
	- CM_PRODUCT_SPECIFIC_ERROR

Specify_Local_LU_Name (CMSLLN)
==============================

    Specify_Local_LU_Name is used by a program to inform Node Services that
    all incoming conversation startup requests received over the specified 
    local LU shall be delivered to that program, irrespective of the TP name
    specified in the request.

Format
------

    CM_RETCODE  CMSLLN( local_lu_name, 
			local_lu_name_length,
			return_code )

    char *local_lu_name;
    int  *local_lu_name_length;
    int  *return_code;

Parameters
----------

    local_lu_name (input)
        Specifies the name of the local LU.

    local_lu_name_length (input)
	Specifies the length of the local LU name not including the trailing 
	'\0'. The length can be from 1 to 17 bytes.

    return_code (output)
	Specifies the result of the call execution. The return_code variable
	can have one of the following values:

	- CM_OK
	- CM_PROGRAM_PARAMETER_CHECK
	    This value indicates one of the following:
	    - The local_lu_name_length specifies a value less than 1 or greater
	      than 17.
	    - The name specified in local_lu_name does not specify a local LU
	      known by Node Services.
	- CM_PRODUCT_SPECIFIC_ERROR

Usage Notes
-----------

1)  The following collision may occur:

    - Program A calls Specify_Local_LU_Name for the local LU LU_X to tell
      Node Services that it will accept all conversations initiated on LU_X.

    - Program B calls Specify_Local_TP_Name with TP_name = TP_B to register
      itself with Node Services and associate the name TP_B with itself.

    If in this situation Node Services receives a conversation startup request
    over LU_X specifying the destination TP name TP_B, a collision exists
    which Node Services will resolve in favour of program A, that is, 
    the conversation startup request will be delivered to the program that
    issued the Specify_Local_LU_Name call.

My proposal assumes that a program cannot use both Specify_Local_TP_Name
and Specify_Local_LU_Name. But there are still possibilities to do this.

For example, if a program is willing to accept conversations only with a
given TP name and a given LU name, it could use both calls.

Which calls should be made, if a program is willing to accept conversations
with TP name TPA on LU LUX and TP name TPB on LU LUY?
Which calls should be made, if a program is willing to accept conversations
with TP name TPC on each LU and TP name TPB only on LU LUZ?

I think here is some work to do for the SIG.

Regards
Peter 

-----------------------------------------------------------------------------
Peter Binninger                         Tel.:  07531-87-4758
Computer Gesellschaft Konstanz mbH      Fax:   07531-87-4888
(Siemens Nixdorf Informationssysteme)   Email: [email-masked]
Max-Stromeyer-Strasse 116
78467 Konstanz
Germany